package com.zx._12_算法.actual;

import java.io.File;
import org.junit.Test;

/**
 * @version v1.0
 * @Project: 20190215-demo
 * @Title: Recursion
 * @Description: 递归
 * @author: zhangxue
 * @date: 2019年4月14日上午9:43:53
 * @company: 未知之地
 * @Copyright: Copyright (c) 2019
 */
public class 递归 {

    /**
     * 使用递归实现统计这个文件夹中所有.java文件总数
     *
     * @param dir 文件夹
     * @return
     */
    private static int getJavaFile(File dir) {
        int count = 0;
        for (File file : dir.listFiles()) {
            // 如果是.java文件，就统计行数
            if (file.isFile() && file.getName().endsWith(".java")) {
                count++;
            }
            // 如果是文件夹，就递归调用
            else if (file.isDirectory()) {
                count += getJavaFile(file);
            }
        }
        return count;
    }

    /**
     * 使用递归实现-爬台阶的爬法
     *
     * @param dir 文件夹
     * @return
     */
    public static int f(int n) {
        if (n == 1) {
            return 1;
        }
        if (n == 2) {
            return 2;
        }
        return f(n - 1) + f(n - 2);
    }

    @Test
    public void test1() {
        int javaFile = getJavaFile(new File("D:\\workspace17\\20190215-demo"));
        System.out.println(javaFile);
    }

    @Test
    public void test2() {
        System.out.println(f(3));
    }


}
